package com.appspot.abcensys.shared;

import java.io.Serializable;
import java.util.ArrayList;

import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;

@PersistenceCapable
public class Les implements Serializable, Comparable<Les> {
	private static final long serialVersionUID = 1L;
	@PrimaryKey
	@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
	private Long id;
	@Persistent
	private ArrayList<String> docenten;
	@Persistent
	private String lesDatum;
	@Persistent
	private String startTijd;
	@Persistent
	private String eindTijd;
	@Persistent
	private ArrayList<String> lokalen;
	@Persistent
	private String vakCode;
	@Persistent
	private String opmerking;
	@Persistent
	private String klasCode;
	@Persistent
	private String opleiding;
	@Persistent
	private String fackulteit;
	@Persistent
	private int weekNummer;
	@Persistent
	private int jaar;

	public void fix() {
		ArrayList<String> fixed = new ArrayList<String>();
		for(String s : this.docenten){
			fixed.add(s);
		}
		this.docenten = fixed;
		
		fixed = new ArrayList<String>();
		for(String s : this.lokalen){
			fixed.add(s);
		}
		this.lokalen = fixed;
	}
	
	public Les() {
		this.docenten = new ArrayList<String>();
		this.lokalen = new ArrayList<String>();
	}

	/**
	 * @return the id
	 */

	public Long getId() {
		return this.id;
	}

	/**
	 * @return string id
	 */

	public String getIdAsString() {
		return "" + id;
	}
	
	/**
	 * @return the deDocenten
	 */

	public ArrayList<String> getDocenten() {
		return this.docenten;
	}

	/**
	 * @param docent
	 */

	public void addDocent(String docent) {
		this.docenten.add(docent);
	}

	/**
	 * @return String
	 */

	public String maakDocentString() {
		String docentString = "";
		for (String docent : this.docenten) {
			docentString += docent + ", ";
		}
		int end = docentString.length() - 2;
		if (end > 0) {
			return docentString.substring(0, end);
		}
		return "";
	}

	/**
	 * @return the lesDatum
	 */

	public String getLesDatum() {
		return this.lesDatum;
	}

	/**
	 * @param lesDatum
	 *            the lesDatum to set
	 */

	public void setLesDatum(String lesDatum) {
		this.lesDatum = lesDatum;
	}

	/**
	 * @return the startTijd
	 */

	public String getStartTijd() {
		return startTijd;
	}

	/**
	 * @param startTijd
	 *            the startTijd to set
	 */

	public void setStartTijd(String startTijd) {
		this.startTijd = startTijd;
	}

	/**
	 * @return the eindTijd
	 */

	public String getEindTijd() {
		return this.eindTijd;
	}

	/**
	 * @param eindTijd
	 *            the eindTijd to set
	 */

	public void setEindTijd(String eindTijd) {
		this.eindTijd = eindTijd;
	}

	/**
	 * @return the lokaal
	 */

	public ArrayList<String> getLokalen() {
		return this.lokalen;
	}

	/**
	 * @param lokaal
	 *            the lokaal to set
	 */

	public void addLokaal(String lokaal) {
		this.lokalen.add(lokaal);
	}
	
	/**
	 * @return String
	 */

	public String maakLokaalString() {
		String lokaalString = "";
		for (String lokaal : this.lokalen) {
			lokaalString += lokaal + ", ";
		}
		int end = lokaalString.length() - 2;
		if (end > 0 ) {
			return lokaalString.substring(0, end);
		}
		return "";
	}

	/**
	 * Setter voor de vakcode.
	 * 
	 * @param vakCode
	 */

	public void setVakCode(String vakCode) {
		this.vakCode = vakCode;
	}

	/**
	 * Getter voor de vakcode.
	 * 
	 * @return De vakcode.
	 */

	public String getVakCode() {
		return this.vakCode;
	}

	/**
	 * @param String
	 *            opmerking bij de les
	 */

	public void setOpmerking(String opmerking) {
		this.opmerking = opmerking;
	}

	/**
	 * @return String opmerking bij de les
	 */

	public String getOpmerking() {
		return this.opmerking;
	}

	/**
	 * @param String
	 *            klascode bij de les
	 */

	public void setKlasCode(String klasCode) {
		this.klasCode = klasCode;
	}

	/**
	 * @return String haalt de klascode op
	 */

	public String getKlasCode() {
		return this.klasCode;
	}

	/**
	 * @return String toString functie
	 */

	public String toString() {
		StringBuilder sb = new StringBuilder();

		// Kop
		sb.append("[LES:");

		// Velden
		sb.append(" van=" + this.startTijd);
		sb.append(" tot=" + this.eindTijd);
		sb.append(" docenten=" + this.docenten);
		sb.append(" lesDatum=" + this.lesDatum);
		sb.append(" startTijd=" + this.startTijd);
		sb.append(" startTijd=" + this.startTijd);
		sb.append(" lokalen=" + this.lokalen);
		sb.append(" vakCode=" + this.vakCode);
		sb.append(" opmerking=" + this.opmerking);
		sb.append(" klasCode=" + this.klasCode);

		// Staart
		sb.append(" ]");
		return sb.toString();
	}

	/**
	 * @return the opleiding
	 */

	public String getOpleiding() {
		return opleiding;
	}

	/**
	 * @param opleiding
	 *            the opleiding to set
	 */

	public void setOpleiding(String opleiding) {
		this.opleiding = opleiding;
	}

	/**
	 * @return the fackulteit
	 */

	public String getFackulteit() {
		return fackulteit;
	}

	/**
	 * @param fackulteit
	 *            the fackulteit to set
	 */

	public void setFackulteit(String fackulteit) {
		this.fackulteit = fackulteit;
	}

	/**
	 * @return the weekNummer
	 */

	public int getWeekNummer() {
		return weekNummer;
	}

	/**
	 * @param weekNummer
	 *            the weekNummer to set
	 */

	public void setWeekNummer(int weekNummer) {
		this.weekNummer = weekNummer;
	}

	/**
	 * @return the jaar
	 */

	public int getJaar() {
		return jaar;
	}

	/**
	 * @param jaar
	 *            the jaar to set
	 */

	public void setJaar(int jaar) {
		this.jaar = jaar;
	}

	@Override
	public int compareTo(Les l) {
		return 1;
	}
}
